package com.tentative.competition.schedule.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tentative.competition.common.core.result.PageResult;
import com.tentative.competition.common.model.param.SubmitWorksApplyParam;
import com.tentative.competition.common.model.schedule.param.ScheduleExamineParam;
import com.tentative.competition.common.model.schedule.param.ScheduleWorkSearchParam;
import com.tentative.competition.common.model.schedule.param.ScheduleWorksParam;
import com.tentative.competition.common.model.schedule.param.WorksGradeListParam;
import com.tentative.competition.common.model.schedule.resp.*;
import com.tentative.competition.common.model.schedule.vo.ScheduleMemberInfoVo;
import com.tentative.competition.schedule.domain.ScheduleWorks;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * <p>
 * 参赛作品信息表 服务类
 * </p>
 *
 * @author SmileH
 * @since 2023-06-22
 */
public interface ScheduleWorksService extends IService<ScheduleWorks> {

    void submitWorks(ScheduleWorksParam param);
    void submitMgWorks(ScheduleWorksParam param);
    void updateHomeShowById(Long id);
    void updateBackShowById(Long id);

    PageResult<ScheduleWorksInfoResp> selectWorksList(ScheduleWorkSearchParam param);

    ScheduleWorksResp getInfo(Long id);

    List<PreviousWorksResp> getPreviousWorks();

    List<HomePreviousWorksResp> getScheduleWorks(String worksName,Long scheduleId);

    PageResult<WorksGradeListResp> selectWorksGradeList(WorksGradeListParam param);

    Boolean submitApply(SubmitWorksApplyParam param);

    List<GeneralMainResp> getWorksKeyVul();

    List<ScheduleMemberInfoVo> getMemberInfoByWorksId(Long worksId);

    void worksPack(Long worksId);

    SubmitWorksApplyParam getImitateWorksInfo();

    Boolean upvote(Long worksId);

    Boolean cancelUpvote(Long worksId);

    void syncWorksUpvoteCount();

    List<GeneralMainResp> awardsPullDown(Long scheduleId);


    List<ScheduleWorks> getWorksByUserId(Long userId);
}
